Typical computing devices may rely on software agents, such as anti-malware agents, for security. However, it is difficult to keep up with the increasing number of malware attacks on users' devices. To combat the malware threat, there is a trend to protect security sensitive software by running it inside a Trusted Execution Environment (TEE). TEEs provide a sterile environment that can protect secrets even when other parts of the system are compromised. Examples of TEEs include Intel® Software Guard Extensions (Intel® SGX), secure virtual machines (VMs), and a converged security engine (CSE). The TEE, while useful to protect secrets within the TEE, may not protect I/O data such as user and sensor data that is communicated into and/or out of the secure “container.” The security requirements for trusted I/O vary per use case and device, and involve flavors and combinations of confidentiality, integrity, liveliness, and replay protection.
Certain systems may provide a trusted execution environment using a virtual machine monitor (VMM), hypervisor, or other virtualization technology. A virtualization-based trusted execution environment may be known as a VMM TEE. In particular, certain versions of the Microsoft® Windows™ operating system may include virtualization-based environments. Some computing devices may include multiple, mutually distrusting trusted execution environments. In particular, many computing devices may include an SGX TEE and a VMM TEE.